/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package gui;

import gui.UI;
import modelo.Lei;

/**
 * Interface que fará o controle da GUI e irá chamar uma classe de negocio para
 * realizar buscas no banco.
 *
 * @author emersonmx
 * @since 0.1
 */
public interface Controlador {

  /**
   * Pega a UI associado ao controlador.
   *
   * @return UI associada.
   */
  public UI getUI();

  /**
   * Define uma UI associada ao controlador.
   *
   * @param ui UI a ser associada.
   */
  public void setUI(UI ui);

  /**
   * Repassa a chamada de inserção para um objeto negocio.
   *
   * @param o objeto a ser repassado.
   */
  public void inserir(Object o);

  /**
   * Repassa a chamada de alteração para um objeto de negocio.
   *
   * @param o objeto a ser repassado.
   */
  public void alterar(Object o);

  /**
   * Repassa a chamada de exclusão para um objeto de negocio.
   *
   * @param o objeto que será excluido.
   */
  public void excluir(Object o);

  /**
   * Pesquisa todos os registros no banco, a lista retornada deve ser repassada
   * para a GUI para que ela mostre os resultados.
   */
  public void pesquisar();

  /**
   * Pesquisa objetos no banco, os atributos que não forem null será incluso na
   * lista que será repassada para a GUI para que possa exibir os resultados.
   *
   * @param objetos com os campos que se deseja buscar preenchido.
   */
  public void pesquisar(Object o);

  public void setJanelaResultado(JanelaResultadoPesquisa janelaResultadoPesquisa);

  public void setJanelaModificarLei(JanelaModificarLei janelaModificarLei);
  
  public boolean numeroLeiUnica(String numeroLei);

    public boolean existObject(Lei lei);
}
